#ifndef _CSCENERENDERER_H_
#define _CSCENERENDERER_H_

#include "auto.h"
#include <buola/gui/x11/cglx.h>

namespace buola { namespace bwm {

///////////////////////////////////////////////////////
///////////////////////////////////////////////////////
////////////////// CSceneRenderer //////////////////////
///////////////////////////////////////////////////////
///////////////////////////////////////////////////////

class CSceneRenderer : public UUncopiable
{
///////////////////////////////
/////////// methods ///////////
///////////////////////////////

public:
//////////////
// creation
//
    CSceneRenderer();
    virtual ~CSceneRenderer();

public:
//startup
    virtual void Enable();
    virtual void Disable() {}

//painting
    virtual void Reshape(Window pOverlay,const CSize_d &pSize)=0;
    virtual void AnimateDesktopSwitch(int pFrom,int pTo)        {}
    virtual void DragStep(gui::EDragState pType,const CPoint_d &pDelta)       {}
    virtual void DragFinish(gui::EDragState pType)                          {}

public:
    virtual void Render()=0;

    virtual void OnLoop() {}

////////////////////////////
/////////// data ///////////
////////////////////////////

///////////////////////
// event and clients
//
protected:
    CSize_d mSize;
    CPoint_d mRasterPos;

    double mFOV;
    double mCamDist;
};

/*namespace bwm*/ } /*namespace buola*/ }

#endif
